using System;
using System.Collections.Generic;
using ns26;
using ns27;
using Triton.Game.Mono;

namespace Triton.Game.Mapping
{
	[Attribute38("AdventureProgressMgr")]
	public class AdventureProgressMgr : MonoClass
	{
		public AdventureProgressMgr(IntPtr address, string className)
			: base(address, className)
		{
		}

		public AdventureProgressMgr(IntPtr address)
			: this(address, "AdventureProgressMgr")
		{
		}

		public static AdventureProgressMgr Get()
		{
			return MonoClass.smethod_15<AdventureProgressMgr>(TritonHs.MainAssemblyPath, "", "AdventureProgressMgr", "Get", Array.Empty<object>());
		}

		public static void Init()
		{
			MonoClass.smethod_17(TritonHs.MainAssemblyPath, "", "AdventureProgressMgr", "Init");
		}

		public static void InitRequests()
		{
			MonoClass.smethod_17(TritonHs.MainAssemblyPath, "", "AdventureProgressMgr", "InitRequests");
		}

		public List<AdventureMission.WingProgress> GetAllProgress()
		{
			return method_14<Class271<AdventureMission.WingProgress>>("GetAllProgress", Array.Empty<object>())?.method_25();
		}

		public AdventureMission.WingProgress GetProgress(int wing)
		{
			return method_14<AdventureMission.WingProgress>("GetProgress", new object[1] { wing });
		}

		public bool OwnsOneOrMoreAdventureWings(AdventureDbId adventureID)
		{
			return method_11<bool>("OwnsOneOrMoreAdventureWings", new object[1] { adventureID });
		}

		public bool OwnsWing(int wing)
		{
			return method_11<bool>("OwnsWing", new object[1] { wing });
		}

		public bool IsWingComplete(AdventureDbId adventureID, AdventureModeDbId modeID, WingDbId wingId)
		{
			return method_11<bool>("IsWingComplete", new object[3] { adventureID, modeID, wingId });
		}

		public bool IsAdventureModeComplete(AdventureDbId adventureID, AdventureModeDbId modeID)
		{
			return method_11<bool>("IsAdventureModeComplete", new object[2] { adventureID, modeID });
		}

		public bool IsWingLocked(AdventureWingDef wingDef)
		{
			return method_11<bool>("IsWingLocked", new object[1] { wingDef });
		}

		public int GetPlayableAdventureScenarios(AdventureDbId adventureID, AdventureModeDbId modeID)
		{
			return method_11<int>("GetPlayableAdventureScenarios", new object[2] { adventureID, modeID });
		}

		public int GetPlayableClassChallenges(AdventureDbId adventureID, AdventureModeDbId modeID)
		{
			return method_11<int>("GetPlayableClassChallenges", new object[2] { adventureID, modeID });
		}

		public SpecialEventType GetWingEventTiming(int wing)
		{
			return method_11<SpecialEventType>("GetWingEventTiming", new object[1] { wing });
		}

		public string GetWingName(int wing)
		{
			return method_13("GetWingName", wing);
		}

		public bool IsWingEventActive(int wing)
		{
			return method_11<bool>("IsWingEventActive", new object[1] { wing });
		}

		public bool CanPlayScenario(int scenarioID)
		{
			return method_11<bool>("CanPlayScenario", new object[1] { scenarioID });
		}

		public bool HasDefeatedScenario(int scenarioID)
		{
			return method_11<bool>("HasDefeatedScenario", new object[1] { scenarioID });
		}

		public bool ScenarioHasRewardData(int scenarioId)
		{
			return method_11<bool>("ScenarioHasRewardData", new object[1] { scenarioId });
		}

		public List<RewardData> GetImmediateRewardsForDefeatingScenario(int scenarioID)
		{
			return method_14<Class271<RewardData>>("GetImmediateRewardsForDefeatingScenario", new object[1] { scenarioID })?.method_25();
		}

		public bool SetWingAck(int wing, int ackId)
		{
			return method_11<bool>("SetWingAck", new object[2] { wing, ackId });
		}

		public void LoadAdventureMissionsFromDBF()
		{
			method_8("LoadAdventureMissionsFromDBF");
		}

		public void WillReset()
		{
			method_8("WillReset");
		}

		public void OnAdventureProgress()
		{
			method_8("OnAdventureProgress");
		}

		public void FireProgressUpdate(bool isStartupAction, AdventureMission.WingProgress oldProgress, AdventureMission.WingProgress newProgress)
		{
			method_8("FireProgressUpdate", isStartupAction, oldProgress, newProgress);
		}

		public void CreateOrUpdateProgress(bool isStartupAction, int wing, int progress)
		{
			method_8("CreateOrUpdateProgress", isStartupAction, wing, progress);
		}

		public void CreateOrUpdateWingFlags(bool isStartupAction, int wing, ulong flags)
		{
			method_8("CreateOrUpdateWingFlags", isStartupAction, wing, flags);
		}

		public void CreateOrUpdateWingAck(int wing, int ack)
		{
			method_8("CreateOrUpdateWingAck", wing, ack);
		}
	}
}
